c programming logic